package object3;

/**
 * 接口的多态特性：多态数组
 */
public class InterfacePolyArr {

    public static void main(String[] args) {
        //多态数组 -> 接口类型数组
        USB[] usbs = new USB[2];
        usbs[0] = new Phone_();
        usbs[1] = new Camera_();

        /*
            遍历USB数组，如果是Phone对象，除了调用USB接口定义的方法外，还需要调用Phone特有方法call
         */
        for (int i = 0; i < usbs.length; i++) {
            usbs[i].work();
            //仍需要进行向下转型
            if (usbs[i] instanceof Phone_) {//判断类型为Phone_
                ((Phone_)usbs[i]).call();
            }
        }
    }
}

interface USB {
    void work();
}

class Phone_ implements USB {

    public void call() {
        System.out.println("手机可以打电话...");
    }

    @Override
    public void work() {
        System.out.println("手机工作中...");
    }
}

class Camera_ implements USB {

    @Override
    public void work() {
        System.out.println("相机工作中...");
    }
}